/*--------语法--------*/
Q_PROPERTY(类型 name READ name WRITE setName NOTIFY nameChanged)
♦ 类型 name:qml中使用该变量名访问
♦ READ name:调用 name()成员函数来读取这个属性的值
♦ WRITE setName:调用 setName()成员函数来设置这个属性的值
♦ NOTIFY nameChanged:当这个属性的值发生变化时,会发出nameChanged()信号
♦♦♦ READ为必须,WRITE 和 NOTIFY 为可选,即是否需要写入和实时更新(绑定)
/*--------myClass.h--------*/
Q_OBJECT
//使用 Q_PROPERTY 将变量 a 暴露给 QML
Q_PROPERTY(bool aQ READ aQ WRITE setAQ NOTIFY aQChanged)
public:
//Getter函数 提供读取功能(对应READ)
bool aQ() const { return a; }
//a 即为要读写的C++成员变量
//Setter函数 提供写入功能(对应WRITE)
void setAQ(const bool &value) {
if (a != value) {
a = value;
//a 即为要读写的C++成员变量
emit aQChanged();
//发生改变时发出信号
}
}
signals:
void aQChanged();
//信号函数
private:
bool a = false;
//被访问的成员函数
/*--------main.cpp--------*/
#include "myclass.h"
#include <QQmlContext>
int main(int argc, char *argv[])
{
//创建类实例
MyClass myObject;
//语法:类名+ 实例名;
//通过实例名访问,QML 中 通过 name 访问
engine.rootContext()->setContextProperty("name", &myObject);
//语法:实例别名+ 实例名;(实例别名可以与实例名一样)
}